package br.com.imob.modelo;

import java.sql.Timestamp;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author Gilton Nascimento
 */
public class ControlEntities {

    /**
     * Transforma a variavel ou atributo, passado por argumento, em vazio
     * caso tenha um valor nulo.
     * @param str String
     * @return Retorna uma String vazia.
     */
    public String setString2Empty( String str ) {
        if (str == null) str = "";
        return str;
    }

    /**
     * Coloca zero caso o numero passado por argumento seja menor que dois caracteres.
     * @param x int
     * @return Retorna uma String, caso o tamanho do numero for 1, sera acrescentado o zero (0).
     */
    public static String colocarZeros( int x )  {
        String z = String.valueOf(x);
        if ( z.length() == 1 )  z = "0" + z;
        else return String.valueOf( x );
        return z;
    }

    public Boolean str2Boolean( String str ) {
    	if( "sim".equals(str) ) return true;
    	else return false;
    }
    
    
    /**
     * Converte Strings em Integers
     * @param str String
     * @return Retorna um inteiro, caso a String seja vazia ou nula retorna zero (0).
     */
    public Integer str2Integer( String str ) {
        if( "".equals(str) || str == null ) return 0;
        return Integer.parseInt(str);
    }
    
    
    /**
     * Converte Strings em Doubles
     * @param str String
     * @return Retorna um double, caso a String seja vazia ou nula retorna zero (0.0
     * ).
     */
    public Double str2Double( String str ) {
    	if( "".equals(str) || str == null ) return 0.0;
    	return Double.valueOf(str);
    }
    /**
     * Converte Dates em Strings
     * @param date Date
     * @return Retorna uma String no formato dd/MM/yyyy.
     */
    public String date2String( Date date ) {
        if ( date == null ) return "";
        return new SimpleDateFormat("dd/MM/yyyy").format(date);
    }
    /**
     * Converte uma Data em String passando um formato por parametro, ou seja
     * quem chamar esse metodo tem a possibilidade de determinar o formato de
     * como a data (String) serÃ¡ exibida.
     * @param date Date
     * @param formato SimpleDateFormat
     * @return Retorna uma String no formato especificado.
     */
    public String date2StringFormat( Date date, String formato ) {
        return new SimpleDateFormat(formato).format(date);
    }
    /**
     * Converte Strings em Dates no formato dd/MM/yyyy.
     * @param str String
     * @return Retona uma Date.
     */
    public Date str2Date( String str ) {
        Date d = new Date();

        if( str == null || "".equals(str) ) return d;

        try {
            d = new SimpleDateFormat("dd/MM/yyyy").parse(str);
        } catch (ParseException ex) {
            System.out.println("Error: "+ex.getMessage());
        }
        return d;
    }

    /**
     * ObtÃ©m o valor da data atual.
     * @return Retorna uma String no formato dd/MM/yyyy com a data corrente.
     */
    public String getCurrentStrDate() {
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        return date2StringFormat(timestamp, "dd/MMM/yyyy");
    }

    /**
     * ObtÃ©m o valor da data atual.
     * @return Retorna um Date contendo a data corrente.
     */
    public Date getCurrentDate() {
        return new Timestamp(System.currentTimeMillis());
    }


    /**
     * Modifica a String para uma palavra com primeira letra maiuscula.
     * @param str String
     * @return Retorna a primeira letra Mauiscula assim como toda a String em seguinda.
     */
    public static String primeiraLetraMaiuscula(String str) {
        return str.substring(0,1).toUpperCase().concat(str.substring(1, str.length()));
    }
}